<template>
  <div>
    <UploadExcel :on-success="onSuccess" />
  </div>
</template>

<script>
import { importEmployees } from '@/api/employee'
export default {
  methods: {
    async onSuccess(data) {
      // console.log(data)
      // data.results是传入Excel的中文key用户对象组成的数组
      const newData = data.results.map(user => {
        // 利用zhToEn这个自定义函数将里面的中文用户key转成英文
        return this.zhToEn(user)
      })
      await importEmployees(newData)
      this.$message.success('导入成功')
      this.$router.back()
    },
    zhToEn(user) {
      const newUser = {}
      // 翻译逻辑
      const dict = {
        '入职日期': 'timeOfEntry',
        '手机号': 'mobile',
        '姓名': 'username',
        '转正日期': 'correctionTime',
        '工号': 'workNumber'
      }
      // 利用传入的对象遍历
      // key是固定的键值对键名,遍历出来的只是键名,不包括键值
      for (const key in user) {
        console.log(user)
        console.log(key)
        // 因为遍历出来的的键名跟翻译逻辑的键名相同,可以通过用一个声明变量赋值转换为英文,即key入职日期=dict入职日期  enkey=dict[key]=timeOfEntry    结果 enkey=timeOfEntry
        const enkey = dict[key]
        // 声明一个变量用于保存user里面的键值
        const value = user[key]
        // console.log(enkey, value)
        if (enkey === 'timeOfEntry' || enkey === 'correctionTime') {
          newUser[enkey] = new Date(this.formatExcelDate(value))
        } else {
          // 重新组装  内部逻辑就是 enkey=timeOfEntry:value键值
          newUser[enkey] = value
        }
      }
      // console.log(newUser)
      // 输出
      return newUser
    },
    formatExcelDate(num, format = '-') {
      if (!/^\d+$/.test(num)) return
      num = parseInt(num)
      let millisecond = 0 // 转化后的毫秒数
      if (num > 60) { // 对大于60的日期进行减1处理
        millisecond = (num - 25568 - 1) * 3600 * 24 * 1000
      } else {
        millisecond = (num - 25568) * 3600 * 24 * 1000
      }
      const date = new Date(millisecond) // 根据转化后的毫秒数获取对应的时间
      const yy = date.getFullYear()
      const m = date.getMonth() + 1
      const mm = m >= 10 ? m : '0' + m
      const d = date.getDate()
      const dd = d >= 10 ? d : '0' + d
      return yy + format + mm + format + dd // 返回格式化后的日期
    }
  }
}
</script>

<style>

</style>
